﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using YasharEl.Infrastructure.EntityModel;

namespace YasharEl.Infrastructure.ProcessEngine
{
    [Serializable]
    public class ProcessPriority : Enumeration
    {
        #region TypeSafe Static Enumarations

        public static readonly ProcessPriority Low = new LowProcessPriority();
        public static readonly ProcessPriority Normal = new NormalProcessPriority();
        public static readonly ProcessPriority High = new HighProcessPriority();

        #endregion

        #region Constructors

        protected ProcessPriority(int value, string shortName, string longName)
            : base(value, shortName, longName)
        {
        }

        protected ProcessPriority()
        {
        }

        #endregion

        #region Inner Classes - Type safe concrete enumarations.

        [Serializable]
        private class LowProcessPriority : ProcessPriority
        {
            public LowProcessPriority()
                : base(1, "Low", "Low Process Priority")
            {

            }
        }

        [Serializable]
        private class NormalProcessPriority : ProcessPriority
        {
            public NormalProcessPriority()
                : base(2, "Normal", "Normal  Process Priority")
            {

            }
        }

        [Serializable]
        private class HighProcessPriority : ProcessPriority
        {
            public HighProcessPriority()
                : base(3, "High", "High  Process Priority")
            {

            }
        }

        #endregion
    }
}
